﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	printf("     **     \n");
//	printf("     **     \n");
//	printf("************\n");
//	printf("************\n");
//	printf("    *  *    \n");
//	printf("    *  *    \n");
//	return 0;
//}

//int main()
//{
//	printf("Name    Age    Gender\n");
//	printf("---------------------\n");
//	printf("jack    18     man\n");
//	return 0;
//}

#include <stdio.h>
//int main()
//{
//	int a, b, c;
//	a = 5;
//
//	// ++a -> a = 6  然后赋给c  c = 6  前置++先++ 后使用
//	c = ++a;  // a = 6  c = 6
//
//	// b = ++c ->  ++c c = 7  b = c  =>c = 7 b = 7
//	// 然后再c++  ->  c = 8
//	// ++a  ->  a = 7
//	// a++  ->  a = 8
//	b = ++c, c++, ++a, a++;   // 这段代码结束  a = 8  c = 8  b = 7
//
//	// b = b  + (a++ + c)
//	// a++ 后置++ 先使用 再++   a++ + c = 8 + 8 = 16 然后a再++   a = 9
//	// b = 7 + 16 = 23
//	b += a++ + c;  // 这段代码结束  a = 9  b = 23  c = 8
//	printf("a = %d b = %d c = %d\n:", a, b, c);  // 9 23 8
//	return 0;
//}

// scanf 如果返回EOF 说明读取失败了

// 这个代码可以让我们有多组输入值
//int main()
//{
//    int a, b;
//    while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
//        // 64 位输出请用 printf("%lld") to 
//        printf("%d\n", a + b);
//    }
//    return 0;
//}

//int main()
//{
//	for (int i = 3; i < 100; i +=3)
//	{
//		printf("%d ", i);
//	}
//	return 0;
//}

#include <stdio.h>

//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		if (i = 5)  // 把i赋值给5  ，死循环打印5
//			printf("%d ", i);
//	}
//	return 0;
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	if (a > b)
//	{
//		if (b > c)
//		{
//				printf("%d %d %d", a, b, c);
//		}
//		else    // b < c
//		{
//			if (a > c)
//			{
//				printf("%d %d %d", a, c, b);
//			}
//			else  // a < c
//			{
//				printf("%d %d %d", c, a, b);
//			}
//		}
//	}
//	else // b > a
//	{
//		if (a > c)
//		{
//			printf("%d %d %d", b, a, c);
//		}
//		else  // a < c
//		{
//			if (b > c)
//			{
//				printf("%d %d %d", b, c, a);
//			}
//			else  // b < c
//			{
//				printf("%d %d %d", c, b, a);
//			}
//		}
//	}
//}

//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	if (a < b)
//	{
//		int tmp = a;
//		a = b;
//		b = tmp;
//	}  //   a >= b  此时
//	if (a < c)
//	{
//		int tmp = a;
//		a = b;
//		b = tmp;
//	} // a >= c
//
//	if (b < c)
//	{
//		int tmp = b;
//		b = c;
//		c = tmp;
//	}  // b>=c;
//	// a>=b>=c
//	printf("%d %d %d\n", a, b, c);
//	return 0;
//}

// 打印100 - 200之间的素数
//int main()
//{
//	int i = 0;
//	int count = 0;
//	for (i = 100; i <= 200; i++)
//	{
//		int j = 0;
//		int flag = 1; // 加上这个数是素数
//		for (j = 2; j < i; j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag == 1)
//		{
//			count++;
//			printf("%d ", i);
//		}
//	}
//	printf("\ncount = %d \n", count);
//	return 0;
//}

// 优化   m = a * b  a和b中至少有一个数字是 <= 根号m的
// 如果要判断i是否是素数时  只要拿2到根号i之间 来试除即可

// sqrt是一个库函数  计算平方根
#include <math.h>
//int main()
//{
//	int i = 0;
//	int count = 0;
//	for (i = 100; i <= 200; i++)
//	{
//		int j = 0;
//		int flag = 1; // 假设这个数是素数
//		for (j = 2; j <= sqrt(i); j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag == 1)
//		{
//			count++;
//			printf("%d ", i);
//		}
//	}
//	printf("\ncount = %d \n", count);
//	return 0;
//}



//C语⾔提供了⼀种⾮常特别的语法，就是 goto 语句和跳转标号， goto 语句可以实现在同⼀个函数
//内跳转到设置好的标号处。
//
//goto 语句如果使⽤的不当，就会导致在函数内部随意乱跳转，打乱程序的执⾏流程，所以我们的建
//议是能不⽤尽量不去使⽤；但是 goto 语句也不是⼀⽆是处，在多层循环的代码中，如果想快速跳出
//使⽤ goto 就⾮常的⽅便了。
//本来 for 循环想提前退出得使⽤ break ，⼀个 break 只能跳出⼀层 for 循环，如果3层循环嵌套
//就得使⽤3个 break 才能跳出循环，所以在这种情况下我们使⽤ goto 语句就会更加的快捷。